'use strict';

const API_KEY = 'sk-kqdiyxciugogeecyyusetqhtxdcfopboplhyzrpbnerdpooo';
const BASE_URL = 'https://api.siliconflow.cn/v1/chat/completions';

exports.main = async (event, context) => {
	// 打印接收到的完整参数
	console.log('收到的参数：', event);
	
	// 兼容两种参数名
	const message = event.message || event.userMessage;
	
	// 检查输入参数
	if (!message) {
		console.log('消息内容为空，event:', event);
		return {
			success: false,
			error: '消息内容不能为空',
			receivedParams: event
		};
	}
	
	try {
		// 构建系统提示信息
		const systemPrompt = `你是一个专业的农业顾问，精通农作物种植、病虫害防治、土壤管理等农业相关知识。
请根据用户的问题，提供准确、专业的建议和解答。回答要简洁明了，易于理解。请用中文回复。`;

		// 构建请求数据
		const requestData = {
			model: "deepseek-ai/DeepSeek-V3",
			messages: [
				{
					role: "system",
					content: systemPrompt
				},
				{
					role: "user",
					content: message
				}
			],
			temperature: 0.7,
			max_tokens: 1000,
			stream: false
		};

		// 构建请求配置
		const requestConfig = {
			method: 'POST',
			data: requestData,
			headers: {
				'Content-Type': 'application/json',
				'Authorization': `Bearer ${API_KEY}`
			},
			dataType: 'json',
			timeout: 30000
		};

		console.log('准备调用 API，完整请求配置：', {
			url: BASE_URL,
			config: {
				...requestConfig,
				headers: {
					...requestConfig.headers,
					'Authorization': '(hidden)'
				}
			}
		});
		
		// 调用硅基云 API
		const response = await uniCloud.httpclient.request(BASE_URL, requestConfig);
		
		console.log('API 响应状态码：', response.status);
		console.log('API 响应头：', response.headers);
		console.log('API 响应数据：', response.data);
		
		// 处理响应
		if (response.status === 200 && response.data && response.data.choices && response.data.choices[0]) {
			return {
				success: true,
				reply: response.data.choices[0].message.content
			};
		} else {
			const errorMessage = response.data?.error?.message || JSON.stringify(response.data);
			throw new Error(`API 调用失败: ${errorMessage}`);
		}
	} catch (error) {
		console.error('API 调用错误：', error);
		console.error('错误堆栈：', error.stack);
		return {
			success: false,
			error: error.message || '服务器错误',
			details: error.stack
		};
	}
};